import java.util.ArrayList;

public class SearchNumbers {
    public static int[] searchIndex(int[] src, int num) {
        ArrayList<Integer> indexList = new ArrayList<>();

        for (int i = 0; i < src.length; i++) {
            if (src[i] == num) {
                indexList.add(i);
            }
        }

        int[] indexes = new int[indexList.size()];
        for (int i = 0; i < indexList.size(); i++) {
            indexes[i] = indexList.get(i);
        }

        return indexes;
    }

    public static void main(String[] args) {
        int[] src = { 2, 3, 5, 2, 6, 3, 1 };
        int num = 2;

        int[] indexes = searchIndex(src, num);
        for (int index : indexes) {
            System.out.print(index + " ");
        }
    }
}



// 在上述代码中，searchIndex() 函数接收两个参数，分别是要查找的数组 src 和要查找的数字 num。
//         函数将返回一个包含所有 num 在 src 中出现下标的数组 indexes。具体实现如下：

//         使用 ArrayList 存储符合要求的下标，因为我们不确定 num 在 src 中出现的次数

//         遍历数组，当当前值等于 num 时，将下标 i 存入 ArrayList

//         遍历结束后，将 ArrayList 中的元素复制到一个新定义的数组中，即可得到 indexes

//         返回 indexes

//         需要注意的是，使用 ArrayList 可以方便地动态添加元素，但最终需要将其转换为数组返回。
